package models

import (
	"time"
)

func (rt *RunTime) 动作_摆摊放置物品(背包ID, 背包X, 背包Y, 摊位X, 摊位Y uint8, 售价 int64, 物品 *Struct物品列表) {
	tx := CreateBuff(100)
	tx.AddInt16(0x0199)
	tx.AddInt32(int32(背包ID))
	tx.AddInt32(int32(背包X))
	tx.AddInt32(int32(背包Y))
	tx.AddInt32(int32(摊位X))
	tx.AddInt32(int32(摊位Y))
	rt.物品_物品信息(tx, 物品)
	if 物品.V数量 != 0 {
		tx.AddByte(1)
	} else {
		tx.AddByte(0)
	}
	tx.AddInt64(售价)
	rt.AddHeadSend10(0x0A, [][]byte{{}, tx.Buff})
}
func (rt *RunTime) 动作_摆摊取回物品(背包ID, 背包X, 背包Y, 摊位X, 摊位Y uint8) {
	tx := CreateBuff(40 - 18)
	tx.AddInt16(0x019D)
	tx.AddInt32(int32(背包ID))
	tx.AddInt32(int32(背包X))
	tx.AddInt32(int32(背包Y))
	tx.AddInt32(int32(摊位X))
	tx.AddInt32(int32(摊位Y))
	rt.AddHeadSend10(0x0A, [][]byte{{}, tx.Buff})
}
func (rt *RunTime) 摆摊_设置总出售金币(金币 int64) {
	tx := CreateBuff(10)
	tx.AddInt16(0x01A2)
	tx.AddInt64(金币)
	rt.AddHeadSend10(0x0A, [][]byte{{}, tx.Buff})
}
func (rt *RunTime) 摆摊_购买指定物品(背包ID uint8, 角色ID int32, 摊位X uint8, 摊位Y uint8, 买几个 uint16, 购买金额 int64) {
	m := rt.V角色内容

	if 购买金额 > rt.V角色.V金币 {
		rt.消息_系统消息(3, "金币不足")
		return
	}
	内容 := m.F获取身边内容(角色ID)
	if 内容 == nil {
		rt.消息_系统消息(3, "距离过远")
		return
	}

	查询物品信息 := S查询摊位物品信息{
		V位置X: 摊位X,
		V位置Y: 摊位Y,
		V物品:  make(chan *Struct物品列表, 1),
	}
	F地图_发送信息(内容, &S交换数据{
		V发送人: rt.V角色内容,
		V类型:  E交换数据类型_查看摊位物品,
		V内容:  查询物品信息,
	})
	var 物品 *Struct物品列表
	select {
	case <-time.After(time.Second * 2):
		rt.消息_系统消息(3, "查询物品超时")
		break
	case 物品 = <-查询物品信息.V物品:
		if 物品 == nil {
			rt.消息_系统消息(3, "物品可能已经售出")
			break
		}
	}
	if 物品 == nil {
		return
	}
	//判断自己背包中是否能放下
	背包 := rt.背包_获取背包(背包ID)
	可用背包X, 可用背包Y, ok := rt.背包_查询空位(背包, 物品)
	if ok == false {
		rt.消息_系统消息(3, "背包空间不足")
		return
	}
	购买信息 := S交换购买信息{}
	购买信息.V位置X = 摊位X
	购买信息.V位置Y = 摊位Y
	购买信息.V数量 = 买几个
	购买信息.V购买金额 = 购买金额
	购买信息.V购买的物品 = make(chan *Struct物品列表, 1)

	F地图_发送信息(内容, &S交换数据{
		V发送人: rt.V角色内容,
		V类型:  E交换数据类型_购买摊位物品,
		V内容:  购买信息,
	})
	select {
	case <-time.After(time.Second * 2):
		rt.消息_系统消息(3, "购买超时")
		break
	case 购买的物品 := <-购买信息.V购买的物品:
		if 购买的物品 == nil {
			rt.消息_系统消息(3, "此物品已售出")
			break
		}
		rt.背包_存放物品(背包, 可用背包X, 可用背包Y, 购买的物品)
		rt.同步_背包指定点(背包, 可用背包X, 可用背包Y, false)
		//4: 付款
		rt.V角色.V金币 -= 购买金额
		rt.发送用户信息(用户信息_金币)
		//rt.动作_摆摊取回物品(摆摊物品.V背包ID, 摆摊物品.V背包X, 摆摊物品.V背包Y, 摆摊物品.V摊位X, 摆摊物品.V摊位Y)
	}
}
